package jm.nj.demo11main.demo04;

import jm.nj.demo03mian.demo03.B;

import java.io.*;

/*
* java.io.BufferedInputStream:字节缓冲输入流
*
* 输入
*
* * 构造方法:
 * 	BufferedInputStream(InputStream in)
 * 	构造方法中传入InputStream字节输入流对象,
 * 	传入的是哪个字节输入流对象,就会给哪个字节输入流对象增加一个缓冲区,提高读取的效率
 * 	可以传入:FileInputStream
*继承自父类InputStream中成员方法:
 * 	int read():读取一个字节并返回，没有字节返回-1.
 * 	int read(byte[]): 读取一定量的字节数，并存储到字节数组中，返回读取到的字节数。
 *
 * 操作流程:
 * 	1.创建FileInputStream对象,绑定数据源
 * 	2.创建字节缓冲输入流BufferedInputStream对象,构造方法中传入FileInputStream
 * 	3.调用BufferedInputStream对象中读取数据的方法,把数据读取到内存
 * 	4.释放资源
 *
 * 总结:
 *      什么时候使用字符流:读取文件或者写入文本文件
 *      什么时候使用字节流:操作的文件是非文本文件
 * 文本文件:使用记事本打开能看懂
* */
public class Demo02BufferedInputSteam {
    public static void main(String[] args) throws IOException {

        FileInputStream fis = new FileInputStream("D:\\0002.jpg");
        FileOutputStream fos = new FileOutputStream("f:\\456.jpg");

        BufferedInputStream bis = new BufferedInputStream(fis);
        BufferedOutputStream bos = new BufferedOutputStream(fos);

        byte[] bytes = new byte[1024];
        int len = 0;
        while ((len = bis.read(bytes))!=-1){
            bos.write(bytes, 0, len);
            bos.flush();
           //bis.flush();  BufferedInputStream无刷新//目前read  input  输入流没有flush()
        }

        bis.close();
        bos.close();
        System.out.println("end");
    }
}
